﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 28/03/2014
 * Time: 07:25 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System.Data;

namespace Gestión_UTN.blimpl
{
    /// <summary>
    /// Description of alumnoblimpl.
    /// </summary>
    public class alumnoblimpl : Gestión_UTN.bl.alumnobl
    {
        private static Gestión_UTN.da.alumnosda createAlumno = Gestión_UTN.factories.dafactory.createAlumno();
        private static Gestión_UTN.da.ciudadda createCiudad = Gestión_UTN.factories.dafactory.createCiudad();

        public alumnoblimpl()
        {
        }

        public bool SaveAlumno(Gestión_UTN.bo.Alumnobo alumno)
        {
            bool ingresado = false;

            try
            {
                if (null != alumno)
                {
                    int codPostal = createCiudad.FindCiudadByNombre(alumno.Ciudad).CodPostal;

                    ingresado = createAlumno.SaveAlumno(alumno.Dni, alumno.Nombre, alumno.Apellido, alumno.FechaNac,
                                                        alumno.Direccion, codPostal, alumno.Legajo,
                                                        alumno.Tel_principal, alumno.Tel_auxiliar,
                                                        alumno.Mail_principal, alumno.Mail_auxiliar);
                }

            }
            catch (exceptions.daexception ex)
            {
                ingresado = false;

                throw new exceptions.blexception(ex.Message);
            }

            return ingresado;
        }

        public bool DeleteAlumno(int dni)
        {
            bool eliminado = false;

            try
            {
                if (0 != dni)
                {
                    eliminado = createAlumno.DeleteAlumno(dni);

                }

            }
            catch (exceptions.daexception ex)
            {

                eliminado = false;

                throw new exceptions.blexception(ex.Message);
            }

            return eliminado;
        }

        public bool ModifyAlumno(int dni_anterior, Gestión_UTN.bo.Alumnobo alumno)
        {
            bool modificado = false;

            try
            {
                if (0 != dni_anterior && null != alumno)
                {
                    int codPostal = createCiudad.FindCiudadByNombre(alumno.Ciudad).CodPostal;

                    modificado = createAlumno.ModifyAlumno(dni_anterior, alumno.Dni, alumno.Nombre,
                                                           alumno.Apellido, alumno.FechaNac, alumno.Direccion,
                                                           codPostal, alumno.Legajo, alumno.Tel_principal,
                                                           alumno.Tel_auxiliar, alumno.Mail_principal,
                                                           alumno.Mail_auxiliar);
                }

            }
            catch (exceptions.daexception ex)
            {
                modificado = false;

                throw new exceptions.blexception(ex.Message);
            }

            return modificado;
        }

        public System.Data.DataTable FindAllAlumnos()
        {
            DataTable tablaAlumnos = null;

            try
            {
                tablaAlumnos = createAlumno.FindAllAlumnos();

            }
            catch (exceptions.daexception ex)
            {
                tablaAlumnos = null;

                throw new exceptions.blexception(ex.Message);
            }

            return tablaAlumnos;
        }

        public Gestión_UTN.bo.Alumnobo FindAlumnoByDNI(int dni)
        {
            Gestión_UTN.bo.Alumnobo alumno = null;
            Gestión_UTN.Entities.Alumno alu = null;

            try
            {
                if (0 != dni)
                {
                    alu = createAlumno.FindAlumnoByDNI(dni);

                    if (null != alu)
                    {
                        string ciudad = createCiudad.FindCiudadByCodPostal(alu.Ciud_codPostal).Nombre;

                        alumno = new Gestión_UTN.bo.Alumnobo(dni, alu.Nombre, alu.Apellido, alu.FechaNac,
                                                              alu.Direccion, ciudad, alu.Legajo,
                                                              alu.Tel_principal, alu.Tel_auxiliar,
                                                              alu.Mail_principal, alu.Mail_auxiliar);

                    }
                }

            }
            catch (exceptions.daexception ex)
            {
                alumno = null;

                throw new exceptions.blexception(ex.Message);
            }

            return alumno;
        }

        public Gestión_UTN.bo.Alumnobo FindAlumnoByLegajo(string legajo)
        {
            Gestión_UTN.bo.Alumnobo alumno = null;
            Gestión_UTN.Entities.Alumno alu = null;

            try
            {
                if (!legajo.Equals(""))
                {
                    alu = createAlumno.FindAlumnoByLegajo(legajo);

                    if (null != alu)
                    {
                        string ciudad = createCiudad.FindCiudadByCodPostal(alu.Ciud_codPostal).Nombre;

                        alumno = new Gestión_UTN.bo.Alumnobo(alu.Dni, alu.Nombre, alu.Apellido, alu.FechaNac,
                                                              alu.Direccion, ciudad, legajo,
                                                              alu.Tel_principal, alu.Tel_auxiliar,
                                                              alu.Mail_principal, alu.Mail_auxiliar);

                    }
                }

            }
            catch (exceptions.daexception ex)
            {
                alumno = null;

                throw new exceptions.blexception(ex.Message);
            }

            return alumno;
        }
    }
}
